// pages/basic/login.js
const APP = getApp();

Page({

    /**
     * 页面的初始数据
     */
    data: {
        //固定参数
        dataEmptyImg: '/asset/img/empty/icon_list_empty.png',
        dataEmptyTip: '暂无数据',
        //布局参数
        //微信变量
        canIUseGetUserProfile: true,
        dataWxJsCode: '',
        dataWxEncryptedData: '',
        dataWxIv: '',
        dataWxRawData: '',
        dataWxUserInfo: {}, //性别：0》未知；1》男；2》女；
        dataWxSignature: '',
        //逻辑变量
        dataBackFlag: 0, //返回继续操作（选项：0》不返回；1》仅返回；2》返回且刷新；）
        isBtnDisabled:false,

        isNeedPrivacy:false,
        privacies:[
            '获取唯一标识，用于快捷登录',
            '获取位置信息，用于限制范围',
            '更多，请点击《查看隐私协议》',
        ]
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        let _this = this;
        //控制权限
        APP.appauth.setAuthSetting();

        //刷新标识
        if (options.refresh) {
            //刷新标识：refresh=1
            _this.data.dataBackFlag = parseInt(options.refresh);
        }
        //操作检测
        if (wx.getUserProfile) {
            _this.setData({
                canIUseGetUserProfile: true
            });
        };
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        let _this = this;

        this.init();
        // _this.doWxLogin(null);
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {
        //打开登录提示
        APP.globalData.wxmp_login_enabled = true;
    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    },

    /**
     * 逻辑区域
     */

    //初始化
    init(){
        wx.getPrivacySetting({
            success: res => {
              // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
              APP.applog.debug(['wx.getPrivacySetting',res]);
              this.data.isNeedPrivacy = res.needAuthorization;
            },
            fail: () => {},
            complete: () => {}
          });
    },

    privacySynchReffer(ref){        
        APP.globalData.privacyRef = ref.detail;
    },

    //微信登录评证
    doWxLogin: function (callback) {
        let _this = this;
        wx.login({
            success(res) {
                if (res.code) {
                    //用户登录凭证（有效期五分钟）
                    _this.setData({
                        dataWxJsCode: res.code
                    }, function () {
                        callback && callback();
                    });
                } else {
                    APP.applog.error(res.errMsg);
                }
            }
        });
    },
    //获取微信数据(新方式)
    getUserProfile: function (event) {
        let _this = this;
        
        if(this.data.isNeedPrivacy){
            APP.globalData.privacyRef.data.checkPrivacy(function(){
                APP.apptool.showToastInfo('授权成功，请点击登录!');
                _this.init();
            });
        }else{
            this.setData({
                isBtnDisabled:true
            });
    
            wx.getUserProfile({
                lang: 'zh_CN',
                desc: '用于微信快捷登录',
                success: function (res) {
                    APP.applog.info(res);
    
                    _this.setData({
                        dataWxRawData: res.rawData,
                        dataWxIv: res.iv,
                        dataWxEncryptedData: res.encryptedData,
                        dataWxSignature: res.signature,
                        dataWxUserInfo: res.userInfo
                    }, function () {
                        _this.doBindWechat(function(){
                            _this.setData({
                                isBtnDisabled:false
                            });
                        });
                    })
                },fail(err){
                    _this.setData({
                        isBtnDisabled:false
                    });
                }
            });
        }        
    },
    //获取微信数据(旧方式)
    getUserInfo: function (event) {
        let _this = this;

        if(this.data.isNeedPrivacy){
            APP.globalData.privacyRef.data.checkPrivacy(function(){
                APP.apptool.showToastInfo('授权成功，请点击登录!');
                _this.init();
            });
        }else{
            wx.getUserInfo({
                lang: 'zh_CN',
                withCredentials: true,
                success: function (res) {
                    APP.applog.info(res);
                    
                    _this.setData({
                        dataWxRawData: res.rawData,
                        dataWxIv: res.iv,
                        dataWxEncryptedData: res.encryptedData,
                        dataWxSignature: res.signature,
                        dataWxUserInfo: res.userInfo
                    }, function () {
                        _this.doBindWechat(function(){
                            _this.setData({
                                isBtnDisabled:false
                            });
                        });
                    });
                },fail(err){
                    _this.setData({
                        isBtnDisabled:false
                    });
                }
            });
        }        
    },
    //微信登录或绑定
    doBindWechat: function (completedcallback) {
        let _this = this;

        _this.doWxLogin(function () {
            APP._post('/api.User/login', {
                code: _this.data.dataWxJsCode,
            },false, function (resData) {
                //执行成功
                //  //缓存微信信息
                //  let jo = JSON.parse(_this.data.dataWxRawData);
                //  APP.appauth.setAuthNickname(jo.nickName);
                //  APP.appauth.setAuthPortrait(jo.avatarUrl);
                 //缓存用户信息
                 APP.appauth.setUserCacheData(resData);
                 //查看权限
                 APP.appauth.setAuthPermission(resData.permission);
                 _this.doNavigateUrl();
            }, function (res) {
                //执行失败
            }, function (res) {
                //执行完成
                completedcallback && completedcallback();
            });
        });
    },
    //跳转控制
    doNavigateUrl: function () {
        let _this = this;
        if (_this.data.dataBackFlag > 0) {
            APP.apptool.showToastInfo('登录成功，请继续操作！', null, 2000, function (res) {
                APP.apptool.navigateBackPage(1, function (targetPage) {
                    if (2 == _this.data.dataBackFlag) {
                        //需刷新数据面，必须实现refreshPage()方法
                        targetPage.refreshPage();
                    }
                });
            });
        } else {
            wx.reLaunch({
                url: '/pages/index/index',
            });
        }
    },
    //取消登录
    cancelLogin: function (event) {
        wx.navigateBack({
            delta: 1
        });
    },
    //查看协议
    clickProtocol: function (event) {
        //执行成功
        let webinfo = APP.apptool.encodeJsonStr({
            weburl: 'http://www.baidu.com',
            webtitle: '用户注册协议'
        });
        wx.navigateTo({
            url: '/pages/function/sub/webpage?webinfo=' + webinfo,
        });
    }


})